home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d963.lha / SIOD / scm / prime-stream.scm < prev    next >
Text File  |  1993-01-02  |  703b  |  25 lines

  1. (define (sieve stream)
  2.         (cons-stream (head stream)
  3.                      (sieve (filter
  4.                             (lambda (x) (not (divisible? x (head stream))))
  5.                             (tail stream)))))
  6.  
  7. (define (divisible? x y) (= (remainder x y) 0))
  8.  
  9. (define (filter pred stream)
  10.    (if (pred (head stream))
  11.        (cons-stream (head stream)
  12.                        (filter pred (tail stream)))
  13.        (filter pred (tail stream))))
  14.  
  15. (define (integers-starting-from n)
  16.         (cons-stream n (integers-starting-from (1+ n))))
  17.  
  18. (define integers (integers-starting-from 2))
  19.  
  20. (define primes (sieve integers))
  21.  
  22. (define (print-stream s)
  23.         (print (head s))
  24.         (print-stream (tail s)))
  25.